With the increasing popularity and importance of object-oriented systems and applications, it has become critical to be able to develop applications in an efficient and reliable manner. Especially within the context of a distributed object system where objects may be more complex and may reside in remote locations, it can be very time consuming for an application developer not only to write the code to implement a local object, but also to locate a remote object and determine what information he or she either needs from the remote object or must provide to the remote object. In general, traditional notions of efficient coding and reuse of software code are equally applicable in regard to the development of application programs for distributed object systems.
Due to the very nature of object-oriented programming within a distributed object system, an application developer is constantly defining new objects, calling and invoking methods on already existing remote objects or receiving information from a remote object for use by previously defined local objects. Accordingly, techniques that would allow an application developer to reuse existing objects in the formation of new objects and implementations would save the developer from having to write these objects from scratch. Also, an apparatus that would allow an application developer to be able to locate objects in a distributed environment to be used within a new application program would be helpful. However, once an existing object has been located within a distributed object environment and has been identified for reuse, it is important to be able to determine what services the object provides and what services it requires in order to connect this object to other objects so as to form a new implementation. In other words, the services that one object provides may be used by another object. But first, the services that an object provides and requires must be determined so that a developer is able to make intelligent choices about how an object may be connected to other objects.
Accordingly, it would be desirable to have a technique and apparatus for determining what services are needed by an object and what services are provided by an object. Furthermore, it would be desirable to be able to filter the definition of an object in the context of a visual tool such that this information may be displayed visually to the user. Additionally, it would be desirable for such a technique to be able to assist in making the connections between objects such that services may be made available to objects requiring them.